package com.tabnet.servlet;

import java.io.IOException;
import java.util.HashMap;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.tabnet.beans.gammeproduit.AppelOffre;
import com.tabnet.beans.personnes.Fournisseur;
import com.tabnet.dao.DAOAppelOffre;
import com.tabnet.dao.DAOException;
import com.tabnet.dao.DAOFactory;

/**
 * Méthode qui s'occupe de supprimer un appel d'offre
 *
 */
public class SuppressionAppelOffre extends HttpServlet {

	private static final long serialVersionUID = 1L;
	
	public static final String ATT_LIST_APPEL	= "appelsOffre";
	public static final String ATT_FOURNISSEUR	= "sessionFournisseur";
	public static final String GET				= "ref";
	public static final String PERSONNE			= "pers";
    public static final String VUE_FOURNISSEUR  = "/adminFourn/accueil.jsp";
    public static final String VUE_GESTIONNAIRE = "/admin/listeAppelOffre.jsp";
    
    private DAOAppelOffre appelDao;

    @SuppressWarnings("unchecked")
	public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
    	try {
			this.appelDao = DAOFactory.getInstance().getAppelOffreDAO();
		} catch (DAOException e1) {
			e1.printStackTrace();
		}
    	
    	/* Récupération de la session et des données depuis la requête */
        HttpSession session = request.getSession();
        
        String ref = (String) request.getParameter(GET);
        String personne = (String) request.getParameter(PERSONNE);
           
        // suppression de l'appel d'offre dans la collection
        HashMap<String, AppelOffre> lesAppels = (HashMap<String, AppelOffre>) session.getAttribute(ATT_LIST_APPEL);
        AppelOffre appelOffre = lesAppels.get(ref);
        lesAppels.remove(ref);
        session.setAttribute(ATT_LIST_APPEL, lesAppels);
        
        if(personne.equals("fournisseur")){
        	Fournisseur fourn = (Fournisseur) session.getAttribute(ATT_FOURNISSEUR);
	        // suppression dans la base de données côté fournisseur
        	try {
				appelDao.delAppelOffreFourn(appelOffre, fourn);
			} catch (DAOException e) {
				e.printStackTrace();
			}
	    	
	        this.getServletContext().getRequestDispatcher( VUE_FOURNISSEUR ).forward( request, response );
        }
        else{
        	// suppression dans la base de données côté gestionnaire
        	try {
				appelDao.delAppelOffreAdmin(appelOffre);
			} catch (DAOException e) {
				e.printStackTrace();
			}
        	
        	this.getServletContext().getRequestDispatcher( VUE_GESTIONNAIRE ).forward( request, response );
        }
    }
}
